package com.crawler.system.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * 爬虫规则数据传输对象
 */
@Data
public class CrawlerRuleDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 规则ID
     */
    private Long id;

    /**
     * 规则名称
     */
    @NotBlank(message = "规则名称不能为空")
    private String name;

    /**
     * 规则描述
     */
    private String description;

    /**
     * 规则类型（CSS: CSS选择器, XPATH: XPath表达式, REGEX: 正则表达式, JSON: JSON路径, CUSTOM: 自定义脚本）
     */
    @NotBlank(message = "规则类型不能为空")
    private String type;
    
    /**
     * 目标元素选择器
     */
    @NotBlank(message = "选择器不能为空")
    private String selector;
    
    /**
     * 提取属性（如text, href, src等）
     */
    private String attribute;
    
    /**
     * 自定义脚本
     */
    private String script;
    
    /**
     * 数据字段名称
     */
    @NotBlank(message = "字段名称不能为空")
    private String fieldName;
    
    /**
     * 是否为必须字段
     */
    private Boolean required = false;
    
    /**
     * 默认值
     */
    private String defaultValue;
    
    /**
     * 数据处理器
     */
    private String processor;
    
    /**
     * 排序序号
     */
    private Integer orderNum = 0;
} 
